import java.util.Stack;

public class MyQueue {
    //仅用两个栈实现队列
    Stack<Integer> stack1;
    Stack<Integer> stack2;
    public MyQueue() {
         stack1 = new Stack<>();
         stack2 = new Stack<>();
    }

    //入队操作
    public void push(int x) {
          //假设用stack1来存储数据，stack2来辅助基本操作的实现
          stack1.push(x);
    }

    public int pop() {
        //判空
        if(empty()) {
            return -1;
        }

    //如果stack2不为空，优先返回stack2的栈顶元素
    if(!stack2.isEmpty()) {
        return stack2.pop();
    }
        //在stack1不为空的时候，进行弹栈操作，然后将弹出的元素立刻放入stack2中
    while(!stack1.isEmpty()) {
        stack2.push(stack1.pop());
    }

    //循环结束之后，stack2的栈顶元素即为第一个入队的元素，弹出即可

        return stack2.pop();
    }

    //返回队列的队头元素
    public int peek() {
        //判空
        if(empty()) {
            return -1;
        }
        //如果stack2不为空，优先返回stack2的栈顶元素
        if(!stack2.isEmpty()) {
            return stack2.peek();
        }
        //在stack1不为空的时候，进行弹栈操作，然后将弹出的元素立刻放入stack2中
        while(!stack1.isEmpty()) {
            stack2.push(stack1.pop());
        }

        //循环结束之后，stack2的栈顶元素即为第一个入队的元素，返回即可
      return stack2.peek();
    }

    public boolean empty() {
       return stack1.isEmpty() && stack2.isEmpty();
    }
}
